<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Personal_lst( $this );

	class Personal_lst extends Lst
	{
	function Personal_lst( &$oModule )
		{
			$this->Lst( $oModule );
			//
			$this->oFecha = new DateObject();
			$this->oHora = new TimeObject();
			$cKeyLookUp = getParam( PARAM_KEYLOOKUP );
			if ( $cKeyLookUp )
			{
				if ( is_numeric(  $cKeyLookUp ) ) $this->aFields['ncPersona'] = $cKeyLookUp;
				else						$this->aFields['cKeyLookUp'] = $cKeyLookUp;
			}
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
					$this->aShowColumns = array( 'Nombre' );
					break;
				case 'L':
					$this->aShowColumns = array( 'Nombre','Interno', 'Area' , 'Estado' );
					break;
			}
		}
	function initialize()
		{
			// Obtiene de su filtro los parametros que necesita para armar el query
			$this->setTitle ( "Personal" );
			$this->setSummary( "Esta tabla contiene los contactos" );
			$this->addColumn ( 'Nombre', '', 'cApellido' );
			$this->addColumn ( 'Interno', 'cInterno', true );
			$this->addColumn ( 'Area', 'cdArea');
			$this->addColumn ( 'Estado', '' );
			$this->addColumn( 'Imagen' );
			$this->addColumn ( 'Email Personal' );
			$this->addColumn ( 'Email Laboral' );
			$this->setColumnAction( 'Nombre', VER_PERSONA , 'ncPersona' , '&bComplex=-1');
			$this->setColumnAction ( 'Area', CONSULTAR_PERSONAS_DE_UNA_ORGANIZACION, 'ncOrganizacion,ncArea', 'bRecursivo=1');
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'Id':
				$cReturn =  $aRow['ncPersona'] . ' ' ;
				break;
				case 'Email Personal':
					$cSql = "SELECT cEmail FROM atPersonaEmail WHERE ncOrganizacion is null and ncPersona = " . $aRow['ncPersona'];
					$aEmail = $this->oDatabase->getArray($cSql);
					$cReturn = implode( "," , $aEmail ) ;
					break;
				case 'Email Laboral':
					$cSql = "SELECT cEmail FROM atPersonaEmail WHERE ncOrganizacion is not null and ncPersona = " . $aRow['ncPersona'];
					$aEmail = $this->oDatabase->getArray($cSql);
					$cReturn = implode( "," , $aEmail ) ;
					break;
				case 'Imagen':
					$cUrl =  URL_ROOT . '?' . PARAM_REFRESH . '=file&amp;' . PARAM_METHOD . '=getImage&amp;cImage=' .  "/personas/" . $aRow['cImagen'];
					$cReturn =  "<img src='$cUrl'/>" ;
				break;
				case 'Estado':
					$cSql = "SELECT MoL.cdMotivoLicencia, PLi.dDesde, PLi.dHasta
								FROM atPersonalLicencia as PLi
								LEFT JOIN acMotivoLicencia as MoL
									ON MoL.ncMotivoLicencia = PLi.ncMotivoLicencia
							WHERE ncPersona = " . $aRow['ncPersona'] ."
								AND '" . Date("Y-m-d") ."' BETWEEN dDesde AND dHasta ";
					$aData = $this->oModule->oDatabase->getMatrix( $cSql );
					foreach( $aData as $aLicencia )
					{
						$this->oFecha->setValue( $aLicencia['dDesde']  );
						$cReturn .= $aLicencia['cdMotivoLicencia'] . ' ' . $this->oFecha->getShortDescription();
						$this->oFecha->setValue( $aLicencia['dHasta']  );
						$cReturn .= ' - ' . $this->oFecha->getShortDescription();
					}
					$cSql = "SELECT PHo.nEntrada, PHo.nSalida, MoE.cdMotivoHorario as cdMotivoEntrada, MoS.cdMotivoHorario as cdMotivoSalida
													FROM atPersonalHorario as PHo
													LEFT JOIN acMotivoHorario as MoE
														ON MoE.ncMotivoHorario = PHo.ncMotivoEntrada
													LEFT JOIN acMotivoHorario as MoS
														ON MoS.ncMotivoHorario = PHo.ncMotivoSalida
							WHERE ncPersona = " . $aRow['ncPersona'] ." AND dIngreso = '" . Date("Y-m-d") . "'";
					$aData = $this->oModule->oDatabase->getMatrix( $cSql );
					foreach( $aData as $aHorario )
					{
						$this->oHora->setValue ( $aHorario['nEntrada'] );
						if ( $aHorario['nEntrada'] ) $cReturn .= $this->oHora->getDescription() ;
						$this->oHora->setValue ( $aHorario['nSalida'] );
						$cReturn .=  ' - ' ;
						if ( $aHorario['nSalida'] ) $cReturn .=  $this->oHora->getDescription();
						if ( $aHorario['cdMotivoEntrada'] || $aHorario['cdMotivoSalida']  )
						{
							$cReturn .= $aHorario['cdMotivoEntrada'] ." - " . $aHorario['cdMotivoSalida'];
						}
					}
					break;
				case 'Nombre':
					$cReturn = $aRow['cNombre'] ;
					if ( $aRow['cAlias'] ) $cReturn .= " ( " . $aRow['cAlias']  . " )";
					$cReturn .= ' ' . $aRow['cApellido'] ;
					break;
				case 'KeyLookUp':
					$cReturn = $aRow['ncPersona'];
					break;
				case 'DescriptionLookUp':
					$cReturn = $aRow['cNombre'] . ' ' . $aRow['cApellido'] ;
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT Per.ncPersona, Per.cApellido, Per.cNombre, OPe.cCargo, OPe.cInterno, OPe.ncArea, OAr.cdArea, OAr.cTelefono, Per.cImagen
												FROM atPersona as Per
												LEFT JOIN atOrganizacionPersona as OPe
													ON OPe.ncPersona = Per.ncPersona
													AND OPe.ncOrganizacion = " . CODIGO_ORGANIZACION . "
												LEFT JOIN atOrganizacionArea as OAr
													ON OAr.ncArea = OPe.ncArea
													AND OAr.ncOrganizacion = " . CODIGO_ORGANIZACION . "
												JOIN atPersonal as Psn
													ON Psn.ncPersona = Per.ncPersona";
			// Arma el Filtro de la Consulta
				$oFiltro = $this->oModule->loadClass( 'Personal_frm' );
				$oFiltro->setDefaultSearchField( "concat(Per.cNombre, ' ', Per.cApellido)" );
				$this->oWhere->addArray ( $oFiltro->getFilterdArray()  , 'Psn');
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_PERSONAL, $cParametroRegistro, 'I', VENTANA_SECUNDARIA);
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncPersona=" . $aRow["ncPersona"];
			$this->addRowAction ( MODIFICAR_PERSONAL, $cParametroRegistro , '', VENTANA_SECUNDARIA);
			$this->addRowAction ( ELIMINAR_UN_PERSONAL, $cParametroRegistro);
			//$this->addRowAction ( CONSULTAR_HORARIOS, $cParametroRegistro, '', '', 'body_main');
			//$this->addRowAction ( CONSULTAR_CONTRATOS, $cParametroRegistro, '', '', 'body_main');
			//$this->addRowAction ( CONSULTAR_LICENCIAS, $cParametroRegistro, '', '', 'body_main');
		}
	}
?>
